home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / BUSINESS / STATA3.LZH / PROBIT.TUT < prev    next >
Text File  |  1988-08-30  |  12KB  |  335 lines

  1. set output error
  2. set display page 23
  3. set more 1
  4. #delimit ;
  5.  
  6. di _n(5) in wh
  7. "  ___  ____  ____  ____  ____ tm" _n
  8. " /__    /   ____/   /   ____/" _n
  9. "___/   /   /___/   /   /___/    Maximum-Likelihood Probit and Logit Estimation"
  10. _n
  11. "------------------------------------------------------------------------------"
  12. _n(2) ;
  13.  
  14.  
  15. di in gr
  16. "This tutorial provides an overview of the Stata commands for estimating" _n
  17. "models of qualitative dependent variables using maximum-likelihood techniques."
  18. _n
  19. "The commands we will discuss are:" _n(2)
  20. _col(16) in wh "inspect     probit     logit" _n(2)
  21. in gr
  22. "We begin by using some automobile data we previously entered into Stata and"
  23. _n
  24. "stored as auto.dta.  That data set contains a number of variables, but we will"
  25. _n
  26. "keep only those we need." _n(4) ;
  27.  
  28.  
  29.  
  30.  
  31. #delimit cr
  32. mac def path
  33. capture run nullfile.tut
  34. if _rc {
  35.     mac def path "\stata\"
  36.     capture run %path`nullfile.tut
  37.     if _rc {
  38.         mac def path "/usr/stata/"
  39.         capture run %path`nullfile.tut
  40.         if _rc {
  41.             #delimit ;
  42.             di in red
  43. "I cannot find the other tutorial files.  I have looked in the current" _n
  44. "directory and in \stata (DOS) or /usr/stata (Unix).  Is Stata installed" _n
  45. "correctly?" _n(2)
  46. "In any case, I cannot run the tutorial." ;
  47.             #delimit cr
  48.             exit
  49.         }
  50.     }
  51. }
  52. macro define F5 "do %path`contents.tut;"
  53. macro define F6 "do %path`probit.tut;"
  54.  
  55. #delimit ;
  56.  
  57. di in wh ". use %path`auto, clear" ;
  58. noisily use %path`auto, clear ;
  59. di _n in wh ". keep make foreign mpg weight" ;
  60. keep make foreign mpg weight ;
  61. set more 0 ; more ; set more 1 ;
  62. di _n in wh ". describe" ;
  63. noisily describe ;
  64. di _n in wh ". list in 1/9" ;
  65. noisily list in 1/9 ;
  66. set more 0 ; more ; set more 1 ;
  67.  
  68. di _n(2) in wh _dup(79) "-" _n in gr
  69. "Probit and logit are used for analysis of qualitative dependent variables." _n
  70. "We have chosen to look at whether a car is foreign or domestic.  In our data,"
  71.  _n
  72. "the variable 'foreign' equals 1 when a car is foreign and 0 when domestic." _n
  73. "Let's " in wh "inspect" in gr " this variable:" _n
  74. in wh _dup(79) "-" _n(2)
  75. ". inspect foreign" ;
  76. noisily inspect foreign ;
  77. set more 0 ; more ; set more 1 ;
  78.  
  79. di _n(2) in wh _dup(79) "-" _n in gr
  80. "All of Stata's estimation commands share the same syntax:  The name of the" _n
  81. "estimator is followed by the left-hand-side variable which in turn is fol-" _n
  82. "lowed by each of the right-hand-side variables.  Thus, the syntax for logit" _n
  83. "estimation is:" _n(2)
  84. _col(16) in wh "logit" in gr "  lhs_variable  rhs_variables ..." _n(2)
  85. in gr
  86. "In the case of both probit and logit, the lhs_variable should take on the" _n
  87. "values 0 and 1; estimation proceeds by nonlinear maximum-likelihood tech-" _n
  88. "niques." _n(2)
  89. "We are going to estimate a model that predicts whether a car is foreign.  The"
  90. _n
  91. "determinants of our model are the car's weight and gas mileage rating, so we"
  92. _n
  93. "will type:" _n
  94. in wh _dup(79) "-" _n(8)
  95. ". logit foreign weight mpg" ;
  96. set more 0 ; more ; set more 1 ;
  97. noisily logit foreign weight mpg ;
  98. di ; set more 0 ; more ; set more 1 ;
  99.  
  100. di _n(2) in wh _dup(79) "-" _n in gr
  101. "Stata's estimation commands share another handy feature:  If you retype the" _n
  102. "name of the command, they reshow the results of the last estimation." _n
  103. in wh _dup(79) "-" _n(3)
  104. ". logit" ;
  105. noisily logit ;
  106. di _n(2) ; set more 0 ; more ; set more 1 ;
  107.  
  108. di _n(2) in wh _dup(79) "-" _n in gr
  109. "Being able to reshow results is handy when numbers have scrolled off the" _n
  110. "screen.  It also allows you to specify different options that you forgot" _n
  111. "to request when you estimated the model." _n(2)
  112. "Both the "
  113. in wh "probit" in gr " and " in wh "logit"
  114. in gr " commands can produce a table comparing the actual" _n
  115. "outcome with whether the predicted probability is greater than or less than" _n
  116. "0.5.  We request that table below, and tell Stata not to bother with redis-" _n
  117. "playing the coefficient table:" _n
  118. in wh _dup(79) "-" _n(3)
  119. ". logit, tabulate nocoef" ;
  120. noisily logit, tabulate nocoef ;
  121. set more 0 ; more ; set more 1 ;
  122.  
  123. di _n(2) in wh _dup(79) "-" _n in gr
  124. "We estimated a model of foreign on weight and mpg using "
  125. in wh "logit" in gr ".  We could just" _n
  126. "as easily have estimated the model using "
  127. in wh "probit" in gr ".  We type:" _n
  128. in wh _dup(79) "-" _n(20)
  129. ". probit foreign weight mpg" ;
  130. set more 0 ; more ; set more 1 ;
  131. noisily probit foreign weight mpg ;
  132. di ; set more 0 ; more ; set more 1 ;
  133.  
  134. di _n(2) in wh _dup(79) "-" _n in gr
  135. "Both probit and logit are nonlinear estimators that are obtained by iterative"
  136. _n
  137. "techniques.  Stata provides three options to control convergence:" _n(2)
  138. _col(15) in wh "iterate(" in gr "#" in wh ")"
  139. _col(31) in gr "the maximum number of iterations" _n
  140. _col(15) in wh "tolerance(" in gr "#" in wh ")"
  141. _col(31) in gr "the coefficient tolerance" _n
  142. _col(15) in wh "ltolerance(" in gr "#" in wh ")"
  143. _col(31) in gr "the log-likelihood tolerance" _n(2)
  144. "You never have to specify any of these option, but you can if you wish.  If" _n
  145. "you do specify one or more of these options, you bear responsibility for the"
  146. _n
  147. "accuracy of the final results." _n
  148. in wh _dup(79) "-" _n(11) ;
  149. set more 0 ; more ; set more 1 ;
  150.  
  151.  
  152. di _n(2) in wh _dup(79) "-" _n in gr
  153. "Once you've produced probit or logit estimates, you can obtain the predicted"
  154. _n
  155. "probabilities using the " in wh "predict" in gr " command." _n(2)
  156. "We will illustrate "
  157. in wh "predict" in gr " using the same data on which we estimated the" _n
  158. "equation, although "
  159. in wh "predict" in gr " has no such restrictions.  You can just as easily"
  160. _n
  161. "turn to another data set and make predictions based on your model." _n(2)
  162. "The syntax of " in wh "predict" in gr" is:" _n(2)
  163. _col(16) in wh "predict" in gr " new-variable-name" _n(2)
  164. "After probit or logit estimation, "
  165. in wh "predict" in gr " predicts probabilities.  After re-"
  166. _n
  167. "gression or ANOVA estimation, " in wh "predict" in gr " predicts outcomes." _n
  168. in wh _dup(79) "-" _n(2)
  169. ". predict probhat" ;
  170. predict probhat ;
  171. di _n in wh ". summarize probhat" ;
  172. noisily summarize probhat ;
  173. set more 0 ; more ; set more 1 ;
  174. di _n in wh ". list in 1/13" ;
  175. noisily list in 1/13 ;
  176. set more 0 ; more ; set more 1 ;
  177.  
  178. di _n(2) in wh _dup(79) "-" _n
  179. "predict" in gr
  180. " can also calculate the predicted value of the index function.  In" _n
  181. "the case of "
  182. in wh "probit" in gr ", the predicted probabilities are given by" _n(2)
  183. _col(26) "probhat = F(zhat)" _n(2)
  184. "where F() is the cumulative normal distribution.  To request the predicted" _n
  185. "values of the index function, the syntax is:" _n(2)
  186. _col(16) in wh "predict"
  187. in gr " new-variable-name" in wh ", index" _n(2)
  188. in wh _dup(79) "-" _n(4)
  189. ". predict zhat, index" ;
  190. predict zhat, index ;
  191. di _n in wh ". summarize probhat zhat" ;
  192. noisily summarize probhat zhat ;
  193. di ; set more 0 ; more ; set more 1 ;
  194.  
  195. di _n(2) in wh _dup(79) "-" _n in gr
  196. "Stata's "
  197. in wh "probit" in gr " and " in wh "logit" in gr
  198. " commands are fully integrated with all the features" _n
  199. "of Stata.  After a regression or ANOVA model, typing '"
  200. in wh "correlate, _coef" in gr "' shows" _n
  201. "the covariance matrix of the estimators (as a correlation matrix).  After" _n
  202. in wh "probit" in gr " and " in wh "logit"
  203. in gr ", the calculation is based on the information matrix." _n
  204. in wh _dup(79) "-" _n(12)
  205. ". correlate, _coef" ;
  206. noisily correlate, _coef ;
  207. set more 0 ; more ; set more 1 ;
  208.  
  209. di _n(2) in wh _dup(79) "-" _n in gr
  210. "After regression or ANOVA estimation, typing '"
  211. in wh "correlate, _coef covariance" in gr "'" _n
  212. "shows the covariance matrix of the estimators.  After probit or logit estima-"
  213. _n
  214. "tion, it shows the inverse information matrix.  Of course, you can abbreviate."
  215. _n
  216. in wh _dup(79) "-" _n(12)
  217. ". cor, _c cov" ;
  218. noisily cor, _c cov ;
  219. set more 0 ; more ; set more 1 ;
  220.  
  221. di _n(2) in wh _dup(79) "-" _n in gr
  222. "Stata is willing to perform hypotheses tests based on the information matrix"
  223. _n
  224. "just as it is after regression or ANOVA estimation.  The syntax for "
  225. in wh "test" in gr " is:"
  226. _n(2)
  227. _col(16) in wh "test" in gr " expression " in wh "=" in gr " expression" _n(2)
  228. "Stata will perform algebra to simplify the expression.  For example, here's" _n
  229. "a crazy hypothesis that illustrates Stata's capabilities:" _n
  230. in wh _dup(79) "-" _n(9)
  231. ". test (weight-mpg)/2 - (mpg-weight) = mpg - (weight+mpg)*2" ;
  232. noisily test (weight-mpg)/2 - (mpg-weight) = mpg - (weight+mpg)*2 ;
  233. set more 0 ; more ; set more 1 ;
  234.  
  235. di _n(2) in wh _dup(79) "-" _n
  236. "test" in gr "'s " in wh "accumulate" in gr
  237. " option allows you to add additional tests so that you can" _n
  238. "specify joint hypotheses.  Adding to our crazy test the hypothesis that" _n
  239. "'mpg=0', we obtain:" _n
  240. in wh _dup(79) "-" _n(2)
  241. ". test mpg=0, accumulate" ;
  242. noisily test mpg=0, accum ;
  243. set more 0 ; more ; set more 1 ;
  244.  
  245. di _n(2) in wh _dup(79) "-" _n  in gr
  246. "All of Stata's other features work with "
  247. in wh "probit" in gr " and " in wh "logit" in gr " as well.  Suppose" _n
  248. "you wanted to estimate the model on only cars that yield more than 18 miles" _n
  249. "per gallon.  You do not have to form a separate data set.  You type"
  250. _n(2)
  251. _col(16) in wh "probit foreign weight mpg if mpg>18" _n(2)
  252. in gr "if you wanted probit estimates, or" _n(2)
  253. _col(17) in wh "logit foreign weight mpg if mpg>18" _n(2)
  254. in gr "to obtain logit estimates." _n
  255. in wh _dup(79) "-" _n(11)
  256. ". probit foreign weight mpg if mpg>18" ;
  257. set more 0 ; more ; set more 1 ;
  258. noisily probit foreign weight mpg if mpg>18 ;
  259. di ; set more 0 ; more ; set more 1 ;
  260.  
  261. di _n(2) in wh _dup(79) "-" _n
  262. "probit" in gr " and " in wh "logit" in gr
  263. " have one more feature, and it is probably the most useful."
  264. _n(2)
  265. "Have you ever estimated a model where one or more of the independent variables"
  266. _n
  267. "perfectly predict success or failure?  If you have, you've experienced one of"
  268. _n
  269. "the more unpleasant aspects of computer optimization.  The program begins" _n
  270. "iterating and iterating as it trys to make one or more of the coefficients" _n
  271. "equal to infinity.  Finally, if the program ever stops at all, it produces" _n
  272. "results that are nothing more than numerical roundoff error." _n(2)
  273. "Stata watches for these kinds of problems, alerts you, fixes them, and pro-"
  274. _n
  275. "perly estimates the model." _n ;
  276.  di in gr
  277. "Right now, this tutorial is concocting such a problem." _n
  278. in wh _dup(79) "-" _n(8) ;
  279.  
  280. use %path`auto, clear ;
  281. keep make mpg rep78 foreign ;
  282. drop if rep78==. ;
  283. gen int repair=1 if rep78==1 | rep78==2 ;
  284. replace repair=2 if rep78==3 | rep78==4 ;
  285. replace repair=3 if rep78==4 ;
  286. tab repair, gen(repair) nofreq ;
  287. drop rep78 ;
  288.  
  289. di in wh ". tabulate foreign repair" ;
  290. set more 0 ; more ; set more 1 ;
  291. noisily tabulate foreign repair ;
  292.  
  293. di in wh _dup(79) "-" _n  in gr
  294. "This is our familiar automobile data.  We added a variable called repair that"
  295. _n
  296. "takes on the values 1, 2, and 3, reflecting the repair record of our cars;" _n
  297. "1 means poor, 2 average, and 3 better-than-average." _n(2)
  298. "In our data, cars that have poor repair records are solely domestic, although"
  299. _n
  300. "other domestic cars have average and better-than-average records, too.  If we"
  301. _n
  302. "were to predict foreign manufacture on the basis of repair records, the pre-"
  303. _n
  304. "dicted probability for repair==1 would be zero, meaning the probit or logit" _n
  305. "coefficient would be minus infinity.  This would set most computer programs"
  306. _n
  307. "buzzing.  Let's try Stata:" _n
  308. in wh _dup(79) "-" _n(2)
  309. ". probit foreign repair1 repair2" ;
  310. set more 0 ; more ; set more 1 ;
  311. noisily probit foreign repair1 repair2 ;
  312. di ; set more 0 ; more ; set more 1 ;
  313.  
  314. drop _all ;
  315. label drop _all ;
  316. macro define F6 "do %path`survive.tut;" ;
  317.  
  318. di _n(4) in white
  319. "Demonstration ends" _n
  320. "------------------" _n ;
  321.  
  322.  
  323. di in green
  324. "That concludes our short demonstration, but there's much more.  We now return"
  325. _n
  326. "control to you.  Some suggestions:" _n ;
  327.  
  328. di in green
  329. "If you ..." _col(34) "Then we will show you ..." _n
  330. "    Press " in white "F5" in green _col(38) "a table of tutorial contents" _n
  331. "    Press " in white "F6" in green _col(38) "the next tutorial, "
  332. in white "survive.tut" _n ;
  333.  
  334. run %path`tobuy.tut ;
  335.